如果你不喜歡 Ktor 裡面提供的 HTML DSL,那也沒關係,Ktor 裡還可以使用另一種方式產生畫面:FreeMarker
FreeMarker 是一個基於 Java 的 template engine,可以透過 .ftl
檔案的模板,來生成 HTML 的原始碼。
和 HTML DSL 時一樣,我們在專案裡面,可以看到使用 FreeMarker template 的範例:
get("/html-freemarker") {
call.respond(FreeMarkerContent(
"index.ftl",
mapOf("data" to IndexData(listOf(1, 2, 3))), "")
)
}
index.ftl
的位置在 resources/templates/index.ftl
,內容如下:
<#-- @ftlvariable name="data" type="com.example.IndexData" -->
<html>
<body>
<ul>
<#list data.items as item>
<li>${item}</li>
</#list>
</ul>
</body>
</html>
其中 <#list data.items as item>
這個語法,是 FreeMarker template 裡面的迴圈語法。
如果我們連線到 http://127.0.0.1:8080/html-freemarker ,然後檢視原始碼的話,可以看到產生的結構如下:
<html>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</body>
</html>
以上就是另一個生成 HTML 畫面的方式。